home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
T-COMAL Today
/
(k)t3.d64
/
plot'char.l
< prev
next >
Wrap
Text File
|
2007-02-28
|
2KB
|
114 lines
8000 // EDIT "PLOT'CHAR.LST"
8010 DIM DUMMY$ OF 25 // SPACE FOR SUB
8020 BUILD'SUB
8030 END
8040 PROC PLOT'CHAR(X,Y,C$,C'SET) CLOSED
8050 IF Y<7 OR Y>199 OR X<0 OR X>312 THEN GOTO EXIT
8060 IY:=199-INT(Y)
8070 P:=INT(X) MOD 8
8080 TWO'TO'P:=2^P; TWO'P'8:=2^(8-P)
8090 S:=7-(IY MOD 8)
8100 COLOR:=PEEK(53281)-240+16*PEEK(646)
8110 C'CD:=ORD(C$)
8120 IF C'CD=255 THEN C'CD:=126
8130 CASE (C'CD DIV 32) OF
8140 WHEN 0,4
8150 C'CD:=32
8160 WHEN 2,5,7
8170 C'CD:=C'CD-64
8180 WHEN 3
8190 C'CD:=C'CD-32
8200 WHEN 6
8210 C'CD:=C'CD-128
8220 OTHERWISE
8230 ENDCASE
8240 CASE C'SET OF
8250 WHEN 0
8260 BASE:=53248
8270 WHEN 1
8280 BASE:=54272
8290 WHEN 2
8300 BASE:=55296
8310 WHEN 3
8320 BASE:=56320
8330 OTHERWISE
8340 ENDCASE
8350 C'ADDR:=8*C'CD+BASE
8360 DIS'INT
8370 I'O:=PEEK(1)
8380 POKE 1,8*(I'O DIV 8)+(I'O MOD 4)
8390 CA:=C'ADDR; R:=IY
8400 CBA:=COLOR'BYTE'ADDR(X,R)
8410 POKE CBA,COLOR
8420 IF P<>0 THEN
8430 POKE CBA+1,COLOR
8440 ENDIF
8450 WHILE R<=IY+S DO
8460 DOTS:=PEEK(CA)
8470 CBA:=CELL'BYTE'ADDR(X,R)
8480 LB:=DOTS DIV TWO'TO'P
8490 AND'BYTE(CBA,LB)
8500 IF P<>0 THEN
8510 RB:=TWO'P'8*(DOTS-LB*TWO'TO'P)
8520 AND'BYTE(CBA+8,RB)
8530 ENDIF
8540 CA:=CA+1; R:=R+1
8550 ENDWHILE
8560 IF S<=7 THEN
8570 CBA:=COLOR'BYTE'ADDR(X,R)
8580 POKE CBA,COLOR
8590 IF P<>0 THEN
8600 POKE CBA+1,COLOR
8610 ENDIF
8620 WHILE R<=IY+7 DO
8630 DOTS:=PEEK(CA)
8640 CBA:=CELL'BYTE'ADDR(X,R)
8650 LB:=DOTS DIV TWO'TO'P
8660 AND'BYTE(CBA,LB)
8670 IF P<>0 THEN
8680 RB:=TWO'P'8*(DOTS-LB*TWO'TO'P)
8690 AND'BYTE(CBA+8,RB)
8700 ENDIF
8710 CA:=CA+1; R:=R+1
8720 ENDWHILE
8730 ENDIF
8740 POKE 1,PEEK(1)+4
8750 ENA'INT
8760 EXIT:
8770 ENDPROC PLOT'CHAR
8780 //
8790 FUNC CELL'BYTE'ADDR(X,IY) CLOSED
8800 RETURN 57344+320*(IY DIV 8)+8*(X DIV 8)+(IY MOD 8)
8810 ENDFUNC CELL'BYTE'ADDR
8820 //
8830 FUNC COLOR'BYTE'ADDR(X,IY) CLOSED
8840 RETURN 55296+40*(IY DIV 8)+X DIV 8
8850 ENDFUNC COLOR'BYTE'ADDR
8860 //
8870 PROC DIS'INT CLOSED
8880 POKE 56334,2*(PEEK(56334) DIV 2)
8890 ENDPROC DIS'INT
8900 //
8910 PROC ENA'INT CLOSED
8920 POKE 56334,PEEK(56334)+1
8930 ENDPROC ENA'INT
8940 //
8950 PROC AND'BYTE(ADDR,BYTE) CLOSED
8960 POKE 251,(ADDR MOD 256)
8970 POKE 252,(ADDR DIV 256)
8980 POKE 253,BYTE
8990 SYS 45031
9000 ENDPROC AND'BYTE
9010 //
9020 PROC BUILD'SUB CLOSED
9030 B:=45031
9040 FOR A:=B TO B+24 DO
9050 READ N
9060 POKE A,N
9070 ENDFOR A
9080 DATA 120,165,1,133,254,41,249
9090 DATA 9,1,133,1,160,0,177,251
9100 DATA 5,253,145,251
9110 DATA 165,254,133,1,88,96
9120 ENDPROC BUILD'SUB